package io.github.wslxm.springbootplus2.manage.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import io.github.wslxm.springbootplus2.client.sys.model.vo.USysConfigVO;
import io.github.wslxm.springbootplus2.core.base.model.BasePage;
import io.github.wslxm.springbootplus2.core.result.Result;
import io.github.wslxm.springbootplus2.manage.sys.model.dto.SysConfigDTO;
import io.github.wslxm.springbootplus2.manage.sys.model.entity.SysConfig;
import io.github.wslxm.springbootplus2.manage.sys.model.query.SysConfigQuery;
import io.github.wslxm.springbootplus2.manage.sys.model.vo.SysConfigVO;

import java.util.List;
import java.util.Map;

/**
 * 系统全局数据信息配置表
 * <p>
 * ::本代码由[兮家小二]提供的代码生成器生成,如有问题,请手动修改 ::作者CSDN:https://blog.csdn.net/qq_41463655
 * </p>
 *
 * @author wangsong
 * @email 1720696548@qq.com
 * @date 2020-08-31 18:31:44
 */
public interface SysConfigService extends IService<SysConfig> {


    /**
     * 树结构数据查询
     *
     * @return {@link BasePage}<{@link SysConfigVO}>
     */
    List<SysConfigVO> tree();


    /**
     * 列表查询
     *
     * @param query query
     * @return com.baomidou.mybatisplus.core.metadata.BasePage<io.github.wslxm.springbootplus2.manage.xj.model.vo.ConfigVO>
     * @version 1.0.0
     */
    BasePage<SysConfigVO> findPage(SysConfigQuery query);


    /**
     * id查询
     * @author wangsong
     * @param id
     * @date 2022/5/15 0015 11:33
     * @return io.github.wslxm.springbootplus2.manage.xj.model.vo.ConfigVO
     * @version 1.0.0
     */
    public SysConfigVO findId(String id);


    /**
     * 添加
     *
     * @param dto dto
     * @return java.lang.String
     * @version 1.0.0
     */
    String insert(SysConfigDTO dto);

    /**
     * 编辑
     *
     * @param id  id
     * @param dto dto
     * @return boolean
     * @version 1.0.0
     */
    boolean upd(String id, SysConfigDTO dto);


    /**
     * 删除
     * @param id
     * @return
     */
    public boolean del(String id);

    /**
     * code 查询
     *
     * @param code code
     * @return io.github.wslxm.springbootplus2.manage.xj.model.vo.ConfigVO
     * @version 1.0.0
     */
    USysConfigVO findByCode(String code);

    /**
     * codes 查询列表数据
     *
     * @return {@link Result}<{@link List}<{@link SysConfig}>>
     */
    Map<String, USysConfigVO> findByCodes(String codes);

    /**
     * 通过父级 code 查询当前父级下的所有配置
     *
     * @return {@link Result}<{@link List}<{@link SysConfig}>>
     */
    Map<String, USysConfigVO> findByParentCode(String parentCode);
}

